`1              
`23-nsij`2me1
braille intgral


    baccalaurat gnral

   preuve d'enseignement
        de spcialit

        session `2023

   numrique et sciences
        informatiques

       preuve du mardi
        `21 mars `2023

     dure de l'preuve:
        `3 heures `30

     volume `1: sujet


  l'usage de la calculatrice
n'est pas autoris.

a`1                         `2
  ds que ce sujet vous est
remis, assurez-vous qu'il est
complet.

  ce sujet comporte `10 pages
numrotes de `1/10  `10/10
dans la version original. la
version version braille
intgral est compose de deux
volumes:
-- le sujet comportant `29 pa-
ges numrotes de `1  `29
-- une annexe de `4 planches
tactiles.

  le candidat traite les
`3 exercices proposs









`2       exercice `1       `3

        exercice `1
         (`3 points)

  :cet exercice porte sur
les protocoles rseau.

  arpanet, partie ouest
reprsente sur la figure `1,
est le premier rseau 
transfert de paquets de don-
nes conu aux tats-unis.
en `1971, ce rseau contenait
`23 n9uds dont `8 dans la
partie ouest:

figure `1. arpanet en
`1971, partie ouest.

      `;voir planche tactile
      no`1 et lgende
      ci-dessous'

9o sri: stanford research
  institute
9o ames: ames research
a`2      exercice `1       `4
  (nasa)
9o ucsb: universit de
  santa barbara
9o ucla: universit de los
  angeles
9o stanford: universit,
  silicon valley
9o rand: re-search and
  development
9o sdc: system development
  corporation (santa moni-
  ca)
9o utah: universit de
  salt lake city

  on schmatise ce rseau par
un ensemble de routeurs (appe-
ls :a, b, c, d, e, f, g et
h) chacun associ directement
 un rseau du m2me nom:

figure `2. schmatisation du
rseau.
      `;voir planche tactile
      no`2 et lgende
      ci-dessous'
b`2      exercice `1       `5

  on s'intresse au protocole
rip, qui minimise le nombre
de sauts entre routeurs. si
on l'applique au n9ud a de la
figure `2, on obtient la table
de co5ts suivante:

      `;la table est retrans
      crite en colonne'

n9ud a
  destination  co5t
  b '''''''''' `1
  c '''''''''' `2
  d '''''''''' `1
  e '''''''''' `2
  f '''''''''' `1
  g '''''''''' `1
  h '''''''''' `1






`3       exercice `1       `6
  `1. crire la table des
co5ts des n9uds b et f.

  `2. en appliquant le proto-
cole rip, donner tous les
chemins possibles d'un paquet
de donnes partant du n9ud f
 destination du n9ud h.

  `3. l'arme ajoute le n9ud
z correspondant sur le r-
seau. sa table de co5ts est
la suivante:
      `;la table est retrans
      crite en colonne'

n9ud z
  destination  co5t
  a '''''''''' `3
  b '''''''''' `3
  c '''''''''' `1
  d '''''''''' `2
  e '''''''''' `3
  f '''''''''' `4
  g '''''''''' `2
  h '''''''''' `1
a`3      exercice `1       `7
  tracer le rseau en ajou-
tant ce n9ud z pour qu'il
respecte cette table de routa-
ge

  `4. on utilise maintenant
le protocole ospf qui mini-
mise la somme des co5ts de la
transmission entre deux n9uds.
  le rseau avec les co5ts
est illustr par la figure `3:

figure `3. rseau avec
co5ts.
      `;voir planche tactile
      no`3'

  avec le protocole ospf,
donner en justifiant le chemin
pris par un paquet d'origine
b  destination du n9ud h.





`4       exercice `2       `8

        exercice `2
         (`3 points)

  :cet exercice porte sur
les bases de donnes et le
langage sql.

  on considre une gestion
simplifie des voyages dans
l'espace. la base de donnes
utilise est constitue de
quatre relations nommes
astronaute, fusee, equipe
et vol. voici le contenu des
tables astronaute, fusee,
equipe et vol.

  les cls primaires sont
soulignes et les clefs
trangres sont prcdes
d'un 0:

      `;tables retranscrites
      par renfoncement
      successif.'
a`4      exercice `2       `9
astronaute
  id astronaute; nom; prenom
    nationalit; nb-vols
  `1; 'pesquet'; 'thomas'
    'franais'; `2
  `2; 'amstrong', 'neil'
    'amricain'; `8
  `3; 'maurer'; 'mathias'
    'allemand'; `5
  `4; 'mcarthur'; 'megan'
    'amricain'; `5
    
fusee
  id fusee; modle
    constructeur; nb-places
  `1; 'falcon `9'
    'space x'; `6
  `2; 'starship'
    'space x'; `100
  `3; 'soyouz'
    'tsskb progress'; `2
  `4; 'sls'
    'boeing'; `6



b`4      exercice `2      `10
equipe
  id vol  0id-astronaute
  `1 '''''' `1
  `1 '''''' `2
  `1 '''''' `3
  `2 '''''' `1
  `2 '''''' `3
  `3 '''''' `1
  `3 '''''' `2
  `3 '''''' `4
  `4 '''''' `2
  `4 '''''' `4

vol
  id vol; 0id-fusee; date
  `1; `1; '`12/09/2022'
  `2; `4; '`25/10/2022
  `3; `3; '`18/11/2022
  `4; `2; '`23/12/2022'

  on pourra utiliser les mots
cls suivants: :count, from,
insert, into, join, on, order
by, select, values, where.
  9o  le mot cl count
permet de rcuprer le nombre
c`4      exercice `2      `11
d'enregistrements issu de la
requ2te.

  par exemple, la requ2te
suivante renvoie la valeur `4.

select count (*) from
  astronaute;
----------------------------`5

  9o le mot cl order by
permet de trier les lments
par ordre alphabtique.

  par exemple, la requ2te
suivante:

select modele from fusee
  order by modele;

renvoie la table

  'falcon `9'
  'sls'
  'soyouz'
  'starship'
a`5      exercice `2      `12
  `1. on s'intresse ici  la
notion de cls primaire et
trangre.
  a. donner la dfinition
d'une cl primaire.

  b. dans la table astronau-
te, la cl primaire est
id-astronaute. expliquer
pourquoi cette requ2te sql
renvoie une erreur:

insert into astronaute
values (`3, 'haignere',
  'claudie', 'franais', `3);

  c. le schma relationnel de
la table astronaute est:
astronaute (id-astronaute:
int, nom: text, prenom:
text, nationalite: text,
nb-vols: int)
  crire le schma relation-
nel de la table fusee en pr-
cisant le domaine de chaque
attribut.
b`5      exercice `2      `13
  `2. on s'intresse ici  la
rcupration d'informations
issues de la base de donnes.

  a. crire le rsultat que
la requ2te suivante renvoie:

select count(*)
from fusee
where constructeur `"
  'spacex';

  b. crire une requ2te sql
qui renvoie le modle et le
constructeur des fuses ayant
au moins quatre places.

  c. crire une requ2te sql
qui renvoie les noms et pr-
noms des astronautes dans
l'ordre alphabtique du nom.





`6       exercice `2      `14
  `3.a. recopier et complter
les requ2tes sql suivantes
permettant d'ajouter un
cinquime vol avec la fuse
'soyouz' le `12/04/2023 avec
l'quipage compos de
pesquet thomas et
mcarthur megan. on ne
s'intresse pas ici  la mise
 jour qui suivra.

insert into vol
  values(`--');
insert into equipe
  values(`--');
insert into `--'
  values(`--');

  b. crire une requ2te sql
permettant d'obtenir le nom et
le prnom des astronautes
ayant dcoll le
'`25/10/2022'.



`7      exercice `3      `15

         exercice `3
         (`6 points)

  :cet exercice porte sur
les arbres binaires, les files
et la programmation oriente
objet.

  cet exercice comporte deux
parties indpendantes.

        partie `1

  une entreprise stocke les
identifiants de ses clients
dans un arbre binaire de
recherche.

  on rappelle qu'un arbre bi-
naire est compos de n9uds,
chacun des n9uds possdant
ventuellement un sous-arbre
gauche et ventuellement un
sous-arbre droit.

a`7     exercice `3      `16
  la taille d'un arbre est le
nombre de n9uds qu'il
contient. sa hauteur est le
nombre de n9uds du plus long
chemin qui joint le n9ud raci-
ne  l'une des feuilles. on
convient que la hauteur d'un
arbre ne contenant qu'un n9ud
vaut `1 et celle de l'arbre
vide vaut `0.

  dans cet arbre binaire de
recherche, chaque n9ud
contient une valeur, ici une
chaine de caractres, qui est,
avec l'ordre lexicographique
(celui du dictionnaire):
  9o strictement suprieure 
    toutes les valeurs des
    n9uds du sous-arbre
    gauche;
  9o strictement infrieure 
    toutes les valeurs des
    n9uds du sous-arbre droit.


b`7     exercice `3      `17
  ainsi les valeurs de cet
arbre sont toutes distinctes.
  on considre l'arbre binai-
re de recherche suivant:

figure `1. arbre binaire de
recherche.

      `;voir planche tactile
      no`4'

  `1. donner la taille et la
hauteur de l'arbre binaire de
recherche de la figure `1.

  `2. recopier cet arbre
aprs l'ajout des identifiants
suivants: 'davidbg' et
'papic9ur' dans cet ordre.

  `3. on dcide de parcourir
cet arbre pour obtenir la
liste des identifiants dans
l'ordre lexicographique.


c`7     exercice `3      `18
  recopier la lettre cor-
respondant au parcours  uti-
liser parmi les propositions
suivantes:

  a -- parcours en largeur
    d'abord
  b -- parcours en pro-
    fondeur dans l'ordre pr-
    fixe
  c -- parcours en pro-
    fondeur dans l'ordre
    infixe
  d -- parcours en pro-
    fondeur dans l'ordre suf-
    fixe (ou postfixe)










`8      exercice `3      `19
  `4. pour traiter informa-
tiquement les arbres binaires,
nous allons utiliser une clas-
se abr.

  un arbre binaire de
recherche, nomm abr dispose
des mthodes suivantes:

  -- abr.est-vide(): renvoie
    true si abr est vide et
    false sinon.
  -- abr.racine(): renvoie
    l'lment situ  la raci-
    ne de abr si abr n'est pas
    vide et none sinon.
  -- abr.sg(): renvoie le
    sous-arbre gauche de abr
    s'il existe et none
    sinon.
  -- abr.sd(): renvoie le
    sous-arbre droit de abr
    s'il existe et none
    sinon.


a`8     exercice `3      `20
  on a commenc  crire une
mthode rcursive present de
la classe abr, o le para-
mtre identifiant est une
chaine de caractres et qui
retourne true si identifiant
est dans l'arbre et false si-
non.

`1 def present(self, identi-
    fiant):
  `2 if self.est-vide():
    `3 return false
  `4 elif self.racine() `""
      identifiant:
    `5 return `--'
  `6 elif self.racine() 2
      identifiant:
    `7 return self.sd(). `--'
  `8 else:
    `9 return `--'
    
  recopier et complter les
lignes `5, `7 et `9 de cette
mthode.

b`8     exercice `3      `21
        partie `2

  on considre une structure
de donnes file que l'on
reprsentera par des lments
en ligne, l'lment  droite
tant la t2te de la file et
l'lment  gauche tant la
queue de la file.

  on appellera f`1 la file
suivante:

      `;en braille, les l-
    ments sont spares par le
    caractres '

'bac''nsi''`2023''file'

  on suppose que les quatre
fonctions suivantes ont t
programmes pralablement en
langage python:
-- creer-file(): renvoie une
  file vide;
-- est-vide(f): renvoie true
c`8     exercice `3      `22
  si la file f est vide et
  false sinon;
-- enfiler(f, e): ajoute l'-
  lment e  la queue de la
  file f;
-- defiler(f): renvoie l'l-
  ment situ  la t2te de la
  file f et le retire de la
  file.

----------------------------`9

  `5. les trois questions
suivantes sont indpendantes.
  a. donner le rsultat
renvoy aprs l'appel de la
fonction est-vide(f`1).
  b. reprsenter la file f`1
aprs l'excution du code
defiler(f`1).
  c. reprsenter la file f`2
aprs l'excution du code sui-
vant:

`1 f`2 `" creer-file()
`2 liste `" ('castor',
a`9     exercice `3      `23
    'python', 'poule')b
`3 for elt in liste:
  `4 enfiler(f`2, elt)

  `6. recopier et complter
les lignes `4, `6 et `7 de la
fonction longueur qui prend en
paramtre une file f et qui
renvoie le nombre d'lments
qu'elle contient.
  aprs un appel  la
fonction, la file f doit
retrouver son tat d'origine.

`1 def longueur(f):
  `2 resultat `" `0
  `3 g `" creer-file()
  `4 while `--':
  `5 elt `" defiler(f)
  `6 resultat `" `--'
  `7 enfiler(`--', `--')
  `8 while not(est-vide(g)):
    `9 enfiler(f, defiler(g))
  `10 return resultat
  
  `7. un site impose  ses
b`9     exercice `3      `24
clients des critres sur leur
mot de passe. pour cela il
utilise la fonction
est-valide qui prend en para-
mtre une chaine de caractres
mot et qui retourne true si
mot correspond aux critres et
false sinon.

`1 def est-valide(mot):
  `2 if len(mot) 2 `8:
    `3 return false
  `4 for c in mot:
    `5 if c in ('!', '0',
        '@', ';', ':')b:
      `6 return true
    `7 return false

  parmi les mots de passe
suivants, recopier celui qui
sera valid par cette
fonction.
a -- 'best@'
b -- 'paptap`23'
c -- '`2!@`59fgds'

c`9     exercice `3      `25


























`10     exercice `3      `26
  `8. le tableau suivant
montre, sur deux exemples,
l'volution d'une file f`3
aprs l'excution de
l'instruction
ajouter-mot(f`3, 'super'):

      `;tableau transcrit en
      liste'

tat initial de f`3  tat de
  f`3 aprs l'instruction
  ajouter-mot(f`3, 'super')
exemple `1:
'bac''nsi''`2023''su-
  per''bac''nsi'
exemple `2:
'test''info'
  'super' 'test''info'

  crire le code de cette
fonction ajouter-mot qui
prend en paramtres une file f
(qui a au plus `3 lments) et
une chaine de caractres vali-
de mdp. cette fonction met 
a`10    exercice `3      `27
jour la file de stockage f des
mots de passe en y ajoutant
mdp et en dfilant, si nces-
saire, pour avoir au maximum
trois lments dans cette fi-
le.

  on pourra utiliser la
fonction longueur de la
question `6.

  `9. pour intensifier sa s-
curit, le site stocke les
trois derniers mots de passe
dans une file et interdit au
client lorsqu'il change son
mot de passe d'utiliser l'un
des mots de passe stocks dans
cette file.

  recopier et complter les
lignes `7 et `8 de la fonction
mot-file:
  9o qui prend en paramtres
    une file f et mdp de type
    chaine de caractres;
b`10    exercice `3      `28
  9o qui renvoie true si le
    mot de passe est un l-
    ment de la file f et
    false sinon.

  aprs un appel  cette
fonction, la file f doit
retrouver son tat d'origine.

`1def mot-file(f, mdp):
  `2 g `" creer-file()
  `3 present `" false
  `4 while not(est-vide(f)):
    `5 elt `" defiler(f)
    `6 enfiler(g, elt)
    `7 if `--':
      `8 present `" `--'
  `9 while not(est-vide(g)):
    `10 enfiler(f, defiler(g))
  `11 return present
  





c`10    exercice `3      `29
  `10. crire une fonction
modification qui prend en pa-
ramtres une file f et une
chaine de caractres nv-mdp.
si le mot de passe nv-mdp
rpond bien aux deux exi-
gences des questions `7 et `9,
alors elle modifie la file des
mots de passe stocks et
renvoie true. dans le cas
contraire, elle renvoie
false.
  on pourra utiliser les
fonctions mot-file, est-va-
lide et ajouter-mot.











